package com.cardone.platform.configuration.service;

import java.util.List;
import java.util.Map;

import com.cardone.common.cache.support.CacheEvictSupport;
import com.cardone.common.dto.PaginationDto;
import com.cardone.platform.configuration.dto.SiteDto;
import com.cardone.platform.configuration.dto.SiteUrlDto;

/**
 * 站服务
 * 
 * @author yaoht
 */
public interface SiteService extends CacheEvictSupport {
	/**
	 * spring bean id
	 */
	String BEAN_ID = "com.cardone.platform.configuration.service.SiteService";

	/**
	 * 查询：站点
	 * 
	 * @param siteUrlCode
	 *            站点路径编号
	 * @return 站点
	 */
	SiteDto findSiteBySiteUrlCode(final String siteUrlCode);

	/**
	 * 保存:站点
	 * 
	 * @param saveSite
	 *            站点对象
	 * 
	 * @return 站点对象
	 */
	SiteDto saveSiteByIdOrCode(final SiteDto saveSite);

	/**
	 * 初始化:站点
	 * 
	 * @param initSiteList
	 *            站点集合
	 */
	void initSite(final List<SiteDto> initSiteList);

	/**
	 * 保存:站点
	 * 
	 * @param saveSite
	 *            站点对象
	 * 
	 * @return 站点对象
	 */
	SiteDto saveSiteByCode(final SiteDto saveSite);

	/**
	 * 删除:站点
	 * 
	 * @param deleteSite
	 *            站点对象
	 * 
	 * @return 影响行数
	 */
	int deleteSiteByCode(final SiteDto deleteSite);

	/**
	 * 删除:站点
	 * 
	 * @param deleteSite
	 *            站点对象
	 * 
	 * @return 影响行数
	 */
	int deleteSiteByIds(final SiteDto deleteSite);

	/**
	 * 设置:站点
	 * 
	 * @param updateSite
	 *            站点对象
	 * 
	 * @return 影响行数
	 */
	int updateSiteByCode(final SiteDto updateSite);

	/**
	 * 设置:站点
	 * 
	 * @param updateSite
	 *            站点对象
	 * 
	 * @return 影响行数
	 */
	int updateSiteByIds(final SiteDto updateSite);

	/**
	 * 读取:站点
	 * 
	 * @param readSite
	 *            站点对象
	 * 
	 * @return 站点对象
	 */
	Integer readSiteByCodeNqId(final SiteDto readSite);

	/**
	 * 读取:站点
	 * 
	 * @param readSite
	 *            站点对象
	 * 
	 * @return 站点对象
	 */
	Integer readSiteByName(final SiteDto readSite);

	/**
	 * 查询:站点
	 * 
	 * @param findSite
	 *            站点对象
	 * 
	 * @return 站点对象
	 */
	SiteDto findSiteByCode(final SiteDto findSite);

	/**
	 * 查询：站点
	 * 
	 * @param code
	 *            编号
	 * @return 站点
	 */
	SiteDto findSiteByCode(final String code);

	/**
	 * 读取：站点
	 * 
	 * @param requiredType
	 *            返回类型
	 * @param objectId
	 *            对象标识
	 * @param defaultValue
	 *            默认值
	 * @param code
	 *            编号
	 * @return 返回值
	 */
	<T> T readSiteByCode(final Class<T> requiredType, final String objectId, final T defaultValue, final String code);

	/**
	 * 查询:站点
	 * 
	 * @param findSite
	 *            站点对象
	 * 
	 * @return 站点对象
	 */
	SiteDto findSiteById(final SiteDto findSite);

	/**
	 * 查询:站点
	 * 
	 * @param findListSite
	 *            站点对象
	 * 
	 * @return 站点对象集合
	 */
	List<SiteDto> findListSiteByCode(final SiteDto findListSite);

	/**
	 * 查询:站点
	 * 
	 * @param findListSite
	 *            站点对象
	 * 
	 * @return 站点对象集合
	 */
	List<SiteDto> findListSiteByName(final SiteDto findListSite);

	/**
	 * 分页:站点
	 * 
	 * @param paginationSite
	 *            站点对象
	 * 
	 * @return 站点分页对象
	 */
	PaginationDto<SiteDto> paginationSiteByCode(final SiteDto paginationSite);

	/**
	 * 分页:站点
	 * 
	 * @param paginationSite
	 *            站点对象
	 * 
	 * @return 站点分页对象
	 */
	PaginationDto<Map<String, Object>> paginationSiteByName(final SiteDto paginationSite);

	/**
	 * 保存:站点信息位置
	 * 
	 * @param saveSiteUrl
	 *            站点信息位置对象
	 * 
	 * @return 站点信息位置对象
	 */
	SiteUrlDto saveSiteUrlByIdOrCode(final SiteUrlDto saveSiteUrl);

	/**
	 * 保存:站点信息位置
	 * 
	 * @param saveSiteUrl
	 *            站点信息位置对象
	 * 
	 * @return 站点信息位置对象
	 */
	SiteUrlDto saveSiteUrlByName(final SiteUrlDto saveSiteUrl);

	/**
	 * 删除:站点信息位置
	 * 
	 * @param deleteSiteUrl
	 *            站点信息位置对象
	 * 
	 * @return 影响行数
	 */
	int deleteSiteUrlByCode(final SiteUrlDto deleteSiteUrl);

	/**
	 * 删除:站点信息位置
	 * 
	 * @param deleteSiteUrl
	 *            站点信息位置对象
	 * 
	 * @return 影响行数
	 */
	int deleteSiteUrlByIds(final SiteUrlDto deleteSiteUrl);

	/**
	 * 设置:站点信息位置
	 * 
	 * @param updateSiteUrl
	 *            站点信息位置对象
	 * 
	 * @return 影响行数
	 */
	int updateSiteUrlByCode(final SiteUrlDto updateSiteUrl);

	/**
	 * 设置:站点信息位置
	 * 
	 * @param updateSiteUrl
	 *            站点信息位置对象
	 * 
	 * @return 影响行数
	 */
	int updateSiteUrlByIds(final SiteUrlDto updateSiteUrl);

	/**
	 * 读取:站点信息位置
	 * 
	 * @param readSiteUrl
	 *            站点信息位置对象
	 * 
	 * @return 站点信息位置对象
	 */
	Integer readSiteUrlByCodeNqId(final SiteUrlDto readSiteUrl);

	/**
	 * 读取:站点信息位置
	 * 
	 * @param readSiteUrl
	 *            站点信息位置对象
	 * 
	 * @return 站点信息位置对象
	 */
	Integer readSiteUrlByName(final SiteUrlDto readSiteUrl);

	/**
	 * 查询:站点信息位置
	 * 
	 * @param findSiteUrl
	 *            站点信息位置对象
	 * 
	 * @return 站点信息位置对象
	 */
	SiteUrlDto findSiteUrlByCode(final SiteUrlDto findSiteUrl);

	/**
	 * 查询:站点信息位置
	 * 
	 * @param findSiteUrl
	 *            站点信息位置对象
	 * 
	 * @return 站点信息位置对象
	 */
	SiteUrlDto findSiteUrlById(final SiteUrlDto findSiteUrl);

	/**
	 * 查询:站点信息位置
	 * 
	 * @param findListSiteUrl
	 *            站点信息位置对象
	 * 
	 * @return 站点信息位置对象集合
	 */
	List<SiteUrlDto> findListSiteUrlByCode(final SiteUrlDto findListSiteUrl);

	/**
	 * 查询:站点信息位置
	 * 
	 * @param findListSiteUrl
	 *            站点信息位置对象
	 * 
	 * @return 站点信息位置对象集合
	 */
	List<SiteUrlDto> findListSiteUrlByName(final SiteUrlDto findListSiteUrl);

	/**
	 * 分页:站点信息位置
	 * 
	 * @param paginationSiteUrl
	 *            站点信息位置对象
	 * 
	 * @return 站点信息位置分页对象
	 */
	PaginationDto<SiteUrlDto> paginationSiteUrlByCode(final SiteUrlDto paginationSiteUrl);

	/**
	 * 分页:站点信息位置
	 * 
	 * @param paginationSiteUrl
	 *            站点信息位置对象
	 * 
	 * @return 站点信息位置分页对象
	 */
	PaginationDto<Map<String, Object>> paginationSiteUrlByName(final SiteUrlDto paginationSiteUrl);
}